// Router.js

Application.Router = (function () {
	var Router = Backbone.Router.extend({
		routes: {
			''										: 'home',
			'mixtura'								: 'home',
			'mixtura/:id'							: 'mixturaDetalles',
			'nuevo/mixtura'							: 'agregarMixtura',
			'nuevo/ensaye/:mixtura'					: 'agregarEnsaye',
			'guardar/access' 						: 'guardarAccess',
			'importar/access' 						: 'importarAccess',
			'ensaye/:mixtura'						: 'ensayeDetalle',
            'nuevo/porosidad'                       : 'nuevoPorosidad',
            'porosidad'                             : 'porosidad',
            'porosidad/:id'                         : 'porosidadDetalles'
		},

        porosidad: function () {
            var 
                porosidades = new Application.Collections.Porosidades(),
                vista,
                self = this;

            porosidades.fetch({
                success: function () {
                    vista = new Application.Views.Porosidad({
                        collection: porosidades
                    });
                    self._mostrarVista(vista);
                }
            });
        },
        
        nuevoPorosidad: function () {
            var vista = new Application.Views.Porosidad_Nuevo();
            this._mostrarVista(vista);
        },
        
        porosidadDetalles: function (id) {
            var 
                porosidad = new Application.Models.Porosidad({
                    id: id
                }),
                vista,
                self = this;

            porosidad.fetch({
                success: function () {
                    vista = new Application.Views.Porosidad_Detalles({
                        model: porosidad
                    });
                    self._mostrarVista(vista);
                }
            });
        },
        
        importarAccess: function () {
            var vista = new Application.Views.Access_Importar(),
                self = this;
        
            self._mostrarVista(vista);
        },

		guardarAccess: function () {
			var 
				vista = new Application.Views.Access_Guardar(),
				self = this;

			self._mostrarVista(vista);
		},

		_mostrarVista: function (vista) {
			Application.vistaGuardada[vista.nombre] = vista;
			Application.Vista.prototype.inicia.apply(vista, null);
		},

		home: function () {
			var 
				mixturas = new Application.Collections.Mixturas(),
				self = this;

			mixturas.fetch({
				success: function () {
					var mixturasView = new Application.Views.Mixturas({ collection : mixturas });
					self._mostrarVista(mixturasView);
				}
			});
		},
		agregarEnsaye: function (mixtura) {
			var 
				mixturas = new Application.Models.Mixtura({
					id: mixtura
				}),
				ensaye,
				self = this;
				
			mixturas.fetch({
				success: function (model, data) {
					ensaye = new Application.Views.Ensayes({ mixtura: mixtura, pesoHumedo: data['PESO HUMEDO'] }),
					self._mostrarVista(ensaye);
				}
			});
		},

		ensayeDetalle: function (mixtura) {
			var 
				model = new Application.Models.Ensaye({
					id: mixtura
				}),
				self = this;

			model.fetch({
				success: function () {
					var view = new Application.Views.Ensayes_Detalles({
						model: model
					});
					self._mostrarVista(view);
				}
			});
		},

		mixturaDetalles: function (id) {
			var mixturas = new Application.Models.Mixtura({
				id: id
			}), self = this;

			mixturas.fetch({
				success: function () {
					var detalles = new Application.Views.Mixturas_Detalles({
						model: mixturas
					});
					self._mostrarVista(detalles);
				}
			});
		},

		agregarMixtura: function () {
			var 
				view = new Application.Views.Mixturas_Nuevo(), 
				self = this;

			self._mostrarVista(view);
		}
	});

	return new Router();
}());
